perm filename DISREM.SAI[VIS,HPM]2 blob
sn#252586 filedate 1976-12-03 generic text, type C, neo UTF8
COMMENT ⊗ VALID 00002 PAGES
C REC PAGE DESCRIPTION
C00001 00001
C00002 00002 ENTRY
C00007 ENDMK
C⊗;
ENTRY;
BEGIN "DISREM"
DEFINE MMMM="2";
REQUIRE "ACCEL.SAI[1,DBG]" SOURCE_FILE;
INTEGER PP,PH,MG,MR,M1,M2,M3,M4,M;
INTEGER I,J,K;
COMMENT PQINIT computes several quantities depending on the order of the
polynominals and needed in subsequent calculations;
INTERNAL PROCEDURE PQINIT (INTEGER P,Q);
BEGIN
PP←P;
PH ← (P+1) DIV 2;
MG ← (P+1)*(P+2)%2;
MR ← 0 MAX ((Q+1) DIV 2 - PH);
M1←MG+1;
M2←2*MG;
M3←M2+1;
M4←M3+1;
M←M2+MR
END;
COMMENT DMODEL uses the values of X and Y to compute the coefficients of
the parameters and inserts them into the A and B arrays, which
can be used to obtain the corrections in X and Y, respectively;
SIMPLE PROCEDURE DMODEL (REAL ARRAY A,B; REAL X,Y);
BEGIN
REAL XX,XY,YY,YDX,RR,RRX,RRY;
IF X=0 THEN YDX←0 ELSE YDX←Y/X;
I←1;
A[1]←B[M1]←XX←1;
YY←1;
FOR J←1 STEP 1 UNTIL PP DO
BEGIN
I←I+1;
XX←XX*X;
YY←YY*Y;
A[I]←B[MG+I]←XY←XX;
FOR K←1 STEP 1 UNTIL J-1 DO
BEGIN
I←I+1;
A[I]←B[MG+I]←XY←XY*YDX;
END;
I←I+1;
A[I]←B[MG+I]←YY;
END;
IF MR>0 THEN
BEGIN
RR ← X↑2 + Y↑2;
XY←RR↑PH;
RRX←X*XY;
RRY←Y*XY;
A[M3]←RRX;
B[M3]←RRY;
FOR I←M4 STEP 1 UNTIL M DO
BEGIN
A[I] ← RRX ← RRX*RR;
B[I] ← RRY ← RRY*RR;
END;
END;
END;
COMMENT DISREM uses the distortion calibration coefficients G as computed by
DISCAL to convert the N points XI,YI into the N points XO,YO. (XO and YO
can refer to the same arrays as XI and YI.) If TOL<0, the forward
conversion is done (X,Y to XP,YP in DISCAL). If TOL≥0, the inverse
conversion is done (XP( 3@Ai↑A`Y2AS8A ∪'
β_RX↓C]HAQ∨_ASLAiQJ↓G←]m∃eOK]
J~∀∩↓i←YKIC]GJQS\Aa≡Y3≡$AM←d↓iKe[%]CiS9NAiQ∀ASiKICiS←9f@Qo%iPAB↓[CqS5kZ~∀$A←L@D`ASi∃eCiS=]fR\@Q!#%≥∪(A5kghA JAGC1YKHA KM←e∀AiQSLAae←
KIke∀Ai↑~(∩AG←5akiJ↓iQJA→k]Gi%←]fA=LA A¬]HA"0Ak]Y∃gfAi!SfAQ¬fACYIKCIr↓EKK\4∀∩AI=]JAEdAGCY1S]NA⊃∪'πβ0Rv~∃%≥)%9β_A!I∨π U%
A %'%~Q∪≥)∃∂$A8vA%¬_A)∨0v~∀∪Iβ_A¬%%β2↓∞Y1∩13∩Y1<Y3≡Rl~∀@@↓¬∂∪8~∀@@↓∨/≤AIβ_A¬%%β2↓αY¬6Dthi:l~∀@@↓'β
↓∨/≤AIβ_A¬%%β2↓12Y lbte:l~∀@@↓%β_↓10Y3dY)∨_Hv~∀@A∪≥)∃∂$AA≥(Y∪Q$v~(@@A)=_e?)=→<dv4∀@@A→∨$A!9)>bAM) @DA+≥)%_A≤A⊃≡~∀@@@@A ∂∪≤E!∨∪9)&D~(@@@@A136E;?1∪m!≥):l~∀@@@@A1e6e;?e∪7!≥Q:v~∀@@@@↓
∨$A%)%>DA')@@bA+9)∪_@D`A ≡4∀@@@@@@@↓¬∂∪8~∀@@@@@@A ≠∨⊃_Qα1∧Y13lc:Y1e6e:Rl~∀@@@@@@A11>@v~∀@@@@@@A
∨HA∪>b↓') bA+≥Q∪_A≠≤XA~f↓') bA+≥Q∪_A~↓ ≡~∀@@@@@@@@@@@@A10A|A10@,Aβ7∪tU∂7∪tv~∀@@@@@@A33|`v~∀@@@@@@A
=$A∪?4bA')∃ @bAU≥)∪_↓~A ≡4∀@@@@@@@@@@@@@A3dA>A3d@VA¬m∪:U∂m∪:v~(@@@@@@@A%A)∨0x`A)!≤~∀@@@@@@@@A¬∂%≤~∀@@@@@@@@@↓1∨7!9):A>↓1∪7!9):W1`v~∀@@@@@@@@@↓3∨7!9):A>↓3∪7!9):W3dv~∀@@@@@@@@@↓π∨≥)%≥+
@ !∨∪≥Q&Dv~(@@@@@@@@@A≥⊂~∀@@@@@@A→'∀~∀@@@@@@@@@A ∂∪≤4∀@@@@@@@@@A1`A>A1%7!≥)t[10v4∀@@@@@@@@@A3dA>A3%7!≥)t[32v4∀@@@@@@@@@A lc:A>↓10[1e6c:v4∀@@@@@@@@@A le:A>↓32[1e6e:v4∀@@@@@@@@@Aβ
π→Iβ)
PHY12Y⊂Y∪)HzbY⊗$v~∀@@@@@@@@@↓≥λv4∀@@@@@@@↓∪@Q⊃6c;<HW 6eu<dRyQ∨_dAQ⊃≤A⊃∨≥
v4∀@@@@@@@↓≥λv4∀@@@@A1∨m!≥);⎇136ctv~∀@@@@Ae∨7!≥Q;?13le:v~(@@@@A≥λE!∨∪9)&Dv4∀@@A∃≥λ@E⊃∪'%4Dv~∃∃≥λ@E⊃∪'%4Dv~∀